package com.cheerful.blog.dao;

import java.util.List;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cheerful.blog.to.ArchiveVo;
import com.cheerful.blog.to.ArticleVo;
import org.apache.ibatis.annotations.Param;
import com.cheerful.blog.entity.Article;

/**
 * (Article)表数据库访问层
 *
 * @author makejava
 * @since 2022-02-07 13:17:49
 */
public interface ArticleDao extends BaseMapper<Article> {

/**
* 批量新增数据（MyBatis原生foreach方法）
*
* @param entities List<Article> 实例对象列表
* @return 影响行数
*/
int insertBatch(@Param("entities") List<Article> entities);

/**
* 批量新增或按主键更新数据（MyBatis原生foreach方法）
*
* @param entities List<Article> 实例对象列表
* @return 影响行数
* @throws org.springframework.jdbc.BadSqlGrammarException 入参是空List的时候会抛SQL语句错误的异常，请自行校验入参
*/
int insertOrUpdateBatch(@Param("entities") List<Article> entities);

    /**
     * 获取浏览量最高的三篇文章
     * @return
     */
    List<Article> getHotArticles();

    void updateViewNums(@Param("id") Long id, @Param("viewNums") Integer viewNums);

    /**
     * 按分组获取文章数量等
     * @return
     */
    List<ArchiveVo> getGroupByYearMonth();

    /**
     * 获取分组后根据年份和月份得到文章信息
     *
     * @param year 年份
     * @param month 月份
     * @return
     */
    List<Article> getGroupInfo(@Param("year") Integer year, @Param("month") Integer month);

}

